
goog.provide('esn.client.Response');
goog.provide('esn.client.ResponseError');


/**
 * @constructor
 */
esn.client.Response = function(opt_data, opt_error) {
  this.data_ = opt_data || null;

  this.error_ = opt_error ? new esn.client.ResponseError(opt_error) : null;
};

esn.client.Response.prototype.hasData = function() {
  return goog.isDefAndNotNull(this.data_);
};

esn.client.Response.prototype.getData = function() {
  return this.data_;
};

esn.client.Response.prototype.setData = function(data) {
  this.data_ = data;
};

esn.client.Response.prototype.hasError = function() {
  return !!this.error_;
};

esn.client.Response.prototype.getError = function() {
  return this.error_;
};

esn.client.Response.prototype.setError = function(error) {
  this.error_ = error;
};


/**
 * @constructor
 */
esn.client.ResponseError = function(error) {
  this.error_ = error;
};

esn.client.ResponseError.prototype.getInternalMessage = function() {
  return this.error_['internal_message'];
};

esn.client.ResponseError.prototype.getExternalMessage = function() {
  return this.error_['external_message'];
};
